package evaluation;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

import utils.Compteur;
import utils.Constante;

public class Arbre {

    private ArrayList<Noeud> listNoeud;
    
    public Arbre(LinkedList<String> arrayMouvement, int[][] grille){
        listNoeud = new ArrayList<Noeud>();
        
        Iterator<String> itMouvement = arrayMouvement.iterator();
        while(itMouvement.hasNext()) {
            String mouvement = itMouvement.next();
            Noeud plateau = new Noeud(grille, mouvement, true, 1);    
            listNoeud.add(plateau);
        }
    }
    
    public String calculerMinMaxAB()
    {
        Iterator<Noeud> itNoeud = listNoeud.iterator();
        int alpha = -1000000;
        String mouvement = listNoeud.get(0).getMouvement();
        System.out.println("Abr tmp : " + Compteur.getTime());
        while(itNoeud.hasNext() && Compteur.getTime() < Constante.MAX_TEMPS) {
            Noeud nCourant = itNoeud.next();
            int score = nCourant.CalculerMinMaxAB(Constante.PROFONDEUR - 1,alpha,10000);
            System.out.println("Test score Abr " + score);
            System.out.println("Test alpha Abr " + alpha);
            System.out.println("Test mouvement Abr " + mouvement + '\n');
            if(alpha < score) {
                alpha = score;
                mouvement = nCourant.getMouvement();
            }
        }
        
        return mouvement;
    }
}
